package com.witmore.skyline.db;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.ibatis.annotations.Mapper;

import java.util.Collections;

public class CodeGenerator {
    public static void main(String[] args) {
        String outputDir = "/Users/gao/Desktop/witmore/IdeaProject/witmore-skyline-master/witmore-skyline-master-db";
        FastAutoGenerator.create("jdbc:mysql://rm-bp178c6zu19mo813lao.mysql.rds.aliyuncs.com:3306/witmore_skyline_dev?useSSL=false&serverTimezone=UTC", "root", "Witmore@2023^0725")
                .globalConfig(builder -> {
                    builder.author("豆子高") // 设置作者
                            .outputDir(outputDir + "/src/main/java") // 输出目录
                            .disableOpenDir() // 禁止打开输出目录
                            ; // 覆盖已生成文件
                })
                .packageConfig(builder -> {
                    builder.parent("com.witmore.skyline") // 设置父包名
                            .moduleName("db") // 设置模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml, outputDir + "/src/main/resources/mapper")); // 设置 XML 文件输出目录
                })
                .strategyConfig(builder -> {
                    builder
                            .addInclude("skyline_driver")
                            .addTablePrefix("skyline_") // 设置过滤表前缀
                            .entityBuilder() // 实体类配置
                            .formatFileName("%sDO")
                            .enableLombok() // 启用 Lombok
                            .enableTableFieldAnnotation() // 启用字段注解
//                            .serviceBuilder() // Service 配置
//                            .formatServiceFileName("%sService") // 设置 Service 接口名称格式
//                            .formatServiceImplFileName("%sServiceImpl") // 设置 Service 实现类名称格式
                            .mapperBuilder()
                            .mapperAnnotation(Mapper.class)
//                            .controllerBuilder() // Controller 配置
//                            .enableRestStyle() // 启用 RestController 注解
                    ;

                })
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }
}
